package com.tinfeng.uplevel;


/**
 * 创建线程
 * 在 Java 中，创建线程有以下 3 种方式：
 *
 * 继承 Thread 类，重写 run() 方法，该方法代表线程要执行的任务；
 * 实现 Runnable 接口，实现 run() 方法，该方法代表线程要执行的任务；
 * 实现 Callable 接口，实现 call() 方法，call() 方法作为线程的执行体，具有返回值，并且可以对异常进行声明和抛出。
 *
 * 线程的状态和生命周期
 * java.lang.Thread.Starte 枚举类中定义了 6 种不同的线程状态：
 *
 * NEW：新建状态，尚未启动的线程处于此状态；
 * RUNNABLE：可运行状态，Java 虚拟机中执行的线程处于此状态；
 * BLOCK：阻塞状态，等待监视器锁定而被阻塞的线程处于此状态；
 * WAITING：等待状态，无限期等待另一线程执行特定操作的线程处于此状态；
 * TIME_WAITING：定时等待状态，在指定等待时间内等待另一线程执行操作的线程处于此状态；
 * TERMINATED：结束状态，已退出的线程处于此状态。
 */
public class JavaThread extends Thread{ // 继承
    // java 多线程
//    int i = 3;
//
//    public JavaThread(String name) { // 构造方法
//    }
//
//    @Override
//    public void run() {   // 重写run
//        System.out.println("这里是线程体");
//        while (i>0) {
//            System.out.println(getName()+"i" +i);
//            i--;
//        }
//
//    }

//    // 静态内部类
//    private  int i =3;
//
//    public JavaThread(String name) {
//        super(name);
//    }
//
//    @Override
//    public void run() {
//        while (i>0) {
//            System.out.println(getName()+"i"+i);
//            i--;
//        }
//    }
//
//    public static void main(String[] args) {
//        JavaThread thread1 = new JavaThread("线程1");
//        JavaThread thread2 = new JavaThread("线程2");
//
//        // 启动
//        thread1.start();
//        thread2.start();
//    }

}
